package demo8

import (
	"fmt"
)

// TestDemo83 使用通道做并发同步
func TestDemo83() {
	// 构建一个通道: 同步用的通道
	ch := make(chan int)

	// 开启一个并发匿名函数
	go func() {
		fmt.Println("start goroutine")

		// 通过通道通知 main 的 goroutine
		// 这一句会一直阻塞直到 main 的 goroutine 接收为止。
		ch <- 0

		fmt.Println("exit goroutine")
	}()

	fmt.Println("wait goroutine")

	// 等待匿名的 goroutine
	// 开启 goroutine 后，马上通过通道等待匿名 goroutine 结束。
	<-ch
	fmt.Println("all done")
}
